<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
    <link rel="stylesheet" href="./note.css" />
  </head>

  <body>
    <h2 class="title" id="software-basics">软件工程基础知识</h2>
    <a class="url" href="https://blog.csdn.net/qq_44774198/article/details/127188130">url参考</a>
    <div class="item-title" id="software-basics-1">
      <span>开发生命周期</span>
      <span> ：指一个系统历经计划、分析、设计、编程、测试、维护直至淘汰的整个过程。 </span>
      <div class="item-child">
        <span>1. 三种划分方法：</span>
        <span> Boehm划分法、国标(GB8566-1988)划分法、RUP划分法。 </span>

        <div class="item-child">
          <span>（1）Boehm划分法：</span>
          <span>
            计划（问题定义、可行性研究）、开发（需求分析、总体设计、详细设计、编码、测试）、运行（维护）三大阶段；
          </span>
        </div>

        <div class="item-child">
          <span>（2）国标(GB8566-1988)划分法：</span>
          <span>
            可行性研究与计划、需求分析、概念设计、详细设计、实现、组装测试、确认测试、使用和维护；
          </span>
        </div>

        <div class="item-child">
          <span>（3）RUP划分法：</span>
          <span> 分为初始、细化、构造、移交四个主要阶段; </span>
        </div>
      </div>
    </div>
    <div class="item-title" id="software-basics-2">
      <span>开发模式</span>
      <div class="item-child">
        <span>1. 瀑布模型：</span>
        <div class="item-child">
          <span>应用场合：</span>
          <span>适合需求明确的项目。</span>
        </div>
        <div class="item-child">
          <span>优点：</span>
          <span>可以使过程比较规范，有利于评审。</span>
        </div>
        <div class="item-child">
          <span>缺点：</span>
          <span>过于理想，缺乏灵活性，容易产生需求偏差。</span>
        </div>
      </div>
      <div class="item-child">
        <span>2. V模型 (瀑布模型变体)：</span>
        <div class="item-child">
          <span>描述：</span>
          <span>是一种典型的测试模型，该模型强调开发过程中测试贯穿始终。</span>
        </div>
      </div>
      <div class="item-child">
        <span>3. 快速原型模型：</span>
        <div class="item-child">
          <span>应用场合：</span>
          <span>需求不够明确，需要经常变化的项目。</span>
        </div>
        <div class="item-child">
          <span>优点：</span>
          <span>充分提现了用户的参与和决策。</span>
        </div>
        <div class="item-child">
          <span>缺点：</span>
          <span>在获得真实需求时，就将抛弃原型。</span>
        </div>
      </div>
      <div class="item-child">
        <span>4. 演化模型：</span>
        <div class="item-child">
          <span>应用场合：</span>
          <span>需求不够明确，对软件需求缺乏准确认识的情况。</span>
        </div>
        <div class="item-child">
          <span>描述：</span>
          <span>
            是迭代的过程模型，是一种“渐进式”原型，让开发人员能够逐步开发出更完整的软件版本。
          </span>
        </div>
      </div>
      <div class="item-child">
        <span>5. 增量模型：</span>
        <div class="item-child">
          <span>应用场合：</span>
          <span>仍有利于进行需求不明确的项目开发。</span>
        </div>
        <div class="item-child">
          <span>描述：</span>
          <span>
            拥有瀑布模型全部优点，采用一种“递增试”模型，关注点是一块一块开发，以增加的方式进行。
          </span>
        </div>
      </div>
      <div class="item-child">
        <span>6. 螺旋模型：</span>
        <div class="item-child">
          <span>应用场合：</span>
          <span>适用于庞大、复杂并且有高风险的系统。</span>
        </div>
        <div class="item-child">
          <span>描述：</span>
          <span>
            结合了瀑布模型和演化模型的优点，由制定计划-风险分析-实施工程-客户评估，这一循环组成。
          </span>
        </div>
        <div class="item-child">
          <span>特点：</span>
          <span>加入了风险分析。</span>
        </div>
      </div>
      <div class="item-child">
        <span>7. 喷泉模型：</span>
        <div class="item-child">
          <span>描述：</span>
          <span>面对对象的开发过程，不存在明显的边界，允许各开发活动交叉、迭代开展。</span>
        </div>
        <div class="item-child">
          <span>核心：</span>
          <span>迭代。</span>
        </div>
        <div class="item-child">
          <span>优点：</span>
          <span>提高软件的开发效率，节省开发时间。</span>
        </div>
        <div class="item-child">
          <span>缺点：</span>
          <span>不利于项目管理。</span>
        </div>
      </div>
      <div class="item-child">
        <span>8. 统一过程(UP)模型：</span>
        <div class="item-child">
          <span>描述：</span>
          <span>一般用于大型软件的开发。</span>
        </div>
        <div class="item-child">
          <span>三个特点：</span>
          <span>用例驱动、以基本架构为中心、迭代和增量。</span>
        </div>
        <div class="item-child">
          <span>四个阶段：</span>
          <span>
            初始阶段（生命周期目标）、细化阶段（生命周期架构）、构建阶段（初始运作功能）和交付阶段（产品发布）。
          </span>
        </div>
        <div class="item-child">
          <span>优点：</span>
          <span>
            每个阶段结束时都要安排一次技术评审，以确定这个阶段的目标是否已经满足，满足则允许项目进入下一个阶段。
          </span>
        </div>
      </div>
      <div class="item-child">
        <span>9. 敏捷开发：</span>
        <div class="item-child">
          <span>描述：</span>
          <span>XP（极限编程）、自适应开发、水晶方法、特性驱动开发等。</span>
        </div>
      </div>
      <div class="item-child">
        <span>10. XP方法：</span>
        <div class="item-child">
          <span>四大价值观：</span>
          <span>沟通、简单、反馈、勇气。</span>
        </div>
        <div class="item-child">
          <span>五大原则：</span>
          <span>快速反馈、简单性假设、逐步修改、提倡更改、优质工作。</span>
        </div>
        <div class="item-child">
          <span>十二个最佳实践：</span>
          <span>
            计划游戏、小型发布、隐喻、简单设计、测试先行、重构、结对编程、集体代码所有制、持续集成、每周工作40小时、现场客户、编码标准。
          </span>
        </div>
      </div>
      <div class="item-child">
        <span>11. 水晶法：</span>
        <div class="item-child">
          <span>描述：</span>
          <span>认为每个不同的项目都需要一套不同的策略、约定和方法论。</span>
        </div>
      </div>
      <div class="item-child">
        <span>12. 并列争求法：</span>
        <div class="item-child">
          <span>描述：</span>
          <span>使用迭代的方法，30天一次的迭代成为一个冲刺。</span>
        </div>
      </div>
      <div class="item-child">
        <span>13. 敏捷统一过程(AUP)：</span>
        <div class="item-child">
          <span>描述：</span>
          <span>采用“在大型上连续”以及在“小型上迭代”原理来构建项目。</span>
        </div>
        <div class="item-child">
          <span>每个AUP迭代执行的活动：</span>
          <span>建模、实现、测试、部署、配置和项目管理、环境管理。</span>
        </div>
      </div>
    </div>
  </body>
</html>
